package espace_physique;

import fichiers.Dossier;
import fichiers.Element;
import fichiers.RacineDossier;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.plaf.metal.MetalBorders;
import javax.swing.tree.DefaultMutableTreeNode;

public class VuePopup extends JPopupMenu{
    
    
    public VuePopup(JTree arbre) {
        
        //this.setBackground(Color.WHITE);
        
        JMenuItem supprimerDePicasial =new JMenuItem("Supprimer de Picasial");
        supprimerDePicasial.addActionListener(new ControleurSupprimerDePicasial(arbre));
        this.add(supprimerDePicasial);
        
        JMenuItem supprimerDuDisque =new JMenuItem("Supprimer du Disque");
        supprimerDuDisque.addActionListener(new ControleurSupprimerDuDisque(arbre));
        this.add(supprimerDuDisque);
        
        JMenuItem localiserSurLeDisque =new JMenuItem("Localiser sur le disque");
        localiserSurLeDisque.addActionListener(new ControleurLocaliserSurLeDisque(arbre));
        this.add(localiserSurLeDisque);
        
        
    }
    
    
}

class ControleurSupprimerDePicasial implements ActionListener{
    
    private JTree arbre;
    
    public ControleurSupprimerDePicasial(JTree arbre){
        
        this.arbre=arbre;
    }
    
    public void actionPerformed(ActionEvent e) {
        
        Element el=(Element)((DefaultMutableTreeNode)this.arbre.getSelectionPath().getLastPathComponent()).getUserObject();
        if(el.estUnDossier()){
            ((Dossier)RacineDossier.getRacine().getElement(el.getFichierCourant().getAbsolutePath())).setVerification(false);
        } else{
            
            el.getPere().supprimerSousElement(el);
        }
    }
}


class ControleurLocaliserSurLeDisque implements ActionListener{
    
    private JTree arbre;
    
    public ControleurLocaliserSurLeDisque(JTree arbre){
        
        this.arbre=arbre;
    }
    
    public void actionPerformed(ActionEvent e) {
        
        String commande;
        Element el=(Element)((DefaultMutableTreeNode)this.arbre.getSelectionPath().getLastPathComponent()).getUserObject();
        if(el.estUnDossier()){
            commande="explorer ";
        } else{
            
            commande="rundll32.exe C:\\WINDOWS\\System32\\shimgvw.dll,ImageView_Fullscreen ";
        }
        try {
            Runtime.getRuntime().exec(commande+ el.getFichierCourant().getAbsolutePath());
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        
    }
}

class ControleurSupprimerDuDisque implements ActionListener{
    
    private JTree arbre;
    
    public ControleurSupprimerDuDisque(JTree arbre){
        
        this.arbre=arbre;
    }
    
    public void actionPerformed(ActionEvent e) {
        
        Element el=(Element)((DefaultMutableTreeNode)this.arbre.getSelectionPath().getLastPathComponent()).getUserObject();
        String phrase="Voulez-vous vraiment supprimer ";
        if(el.estUnDossier()){
            phrase=phrase+" le dossier ";
        }else{
            phrase=phrase+" l\'image ";
        }
        phrase=phrase+el.toString()+" du disque ?";
        int rep=JOptionPane.showConfirmDialog(null,phrase,"Confirmer",JOptionPane.YES_NO_OPTION);
        if(rep==JOptionPane.YES_OPTION){
            
            el.supprimerDuDisque();
        }
    }
}